Cài đặt PHP 8.3 trên Debian 11, 12 - Install PHP 8.3 on Debian 11, 12

Bài viết này giải thích cách cài đặt PHP 8.3 trên các hệ thống Debian hiện đại. PHP 8.3 là bản cập nhật mới quan trọng của PHP trong năm 2023. Nó mang đến nhiều tính năng mới thú vị như hằng số lớp có kiểu, một tập hợp mới các Exceptions trong tiện ích DateTime, một hàm json_validate mới, và một số tính năng, thay đổi và những thứ đã được đánh dấu để loại bỏ. Như mọi khi, PHP 8.3 đem đến nhiều sửa lỗi và cải tiến cũng như cải thiện hiệu suất.

Hướng dẫn cài đặt PHP 8.3 trên Debian 11, 12

Yêu cầu đầu tiên

Không có phiên bản Debian và Ubuntu hiện tại nào bao gồm PHP 8.3 trong kho lưu trữ phần mềm mặc định của chúng. Các gói PHP đã được xây dựng trước có sẵn từ kho lưu trữ do Ondřej Surý quản lý, và bài viết này sử dụng chúng. Các gói trong kho lưu trữ này tuân theo cùng cấu hình gói, tên gói và cấu hình systemd như các gói PHP được cung cấp bởi kho lưu trữ phần mềm của hệ điều hành.

Bài viết này tập trung vào Debian 11 (Bullseye) và Debian 12 (Bookworm).

Chú ý: Có thể có những hành động có thể gây hậu quả tiêu cực

Những hành động sau được thực hiện dưới dạng sudo và yêu cầu quyền đó để tiếp tục. Cảnh báo thông thường khi thay đổi toàn bộ hệ thống cũng áp dụng ở đây. Hãy đảm bảo sao lưu hệ thống và kiểm tra sao lưu trước khi tiếp tục. Khi nâng cấp, đừng quên di chuyển cấu hình sang phiên bản PHP mới.

Liệt kê và ghi chú về các gói PHP hiện tại

Khi nâng cấp phiên bản PHP hiện tại, lệnh sau liệt kê tất cả các gói đã cài đặt có từ "php" trong tên gói, và lưu nó vào tệp packages.txt cũng như hiển thị trên terminal.

Điều này sẽ hữu ích để cài đặt các gói PHP 8.3 tương ứng trong các bước tiếp theo.

Bước này không cần thiết khi cài đặt PHP trên một hệ thống mới.

dpkg -l | grep php | tee packages.txt

Thêm kho lưu trữ ondrej/php

PHP 8.3 không có sẵn để tải về từ bất kỳ kho lưu trữ phần mềm Debian hoặc Ubuntu hiện tại nào. Kho lưu trữ phần mềm Debian và Ubuntu do Ondřej Surý quản lý chứa các gói chính của PHP 8.3 và một số gói PECL phổ biến, và chúng luôn được cập nhật.

Các lệnh sau thêm kho lưu trữ vào danh sách các kho lưu trữ phần mềm, và chạy apt update để lấy danh sách các gói có sẵn từ kho lưu trữ mới cũng như kho lưu trữ hiện tại.

Đối với Debian:

sudo apt install apt-transport-https
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

Cài đặt gói PHP 8.3 mới

Với kho lưu trữ PHP của Ondrej đã được thêm vào, bạn có thể cài đặt các gói PHP bằng apt. Tất cả các gói PHP 8.3 tuân theo mẫu php8.3-XYZ. Những tên này phù hợp và ghi đè lên các phiên bản PHP được cung cấp bởi kho lưu trữ phần mềm của hệ điều hành.

sudo apt install php8.3-common php8.3-cli php8.3-fpm php8.3-{curl,bz2,mbstring,intl}
  • Gói php8.3-common là một gói siêu (meta-package) cài đặt nhiều tiện ích mở rộng PHP. Sau này có thể tắt lựa chọn từng tiện ích mở rộng một cách tùy chọn. Các tiện ích mở rộng cốt lõi của PHP như Date, Phar, JSON, ctype, và random luôn được bao gồm. Không cần thiết và cũng không thể cài đặt chúng dưới dạng các gói riêng lẻ.
  • Thay vì cài đặt php8.3-common, cũng có thể cài đặt từng gói riêng lẻ. Việc cài đặt php8.3-common là tương đương với việc cài đặt tất cả các tiện ích mở rộng như thể hiện dưới đây:
apt install php8.3-{calendar,ctype,exif,ffi,fileinfo,ftp,gettext,iconv,pdo,phar,posix,shmop,sockets,sysvmsg,sysvsem,sysvshm,tokenizer}
  • Gói php8.3-cli cài đặt PHP CLI, và tạo symlink từ /usr/bin/php thành /usr/bin/php8.3. Xem "Chạy PHP 8.3 Cùng Lúc với Các Phiên Bản Khác" để biết thêm thông tin.
  • Gói php8.3-fpm cài đặt SAPI FPM của PHP để tích hợp với máy chủ web. Xem "Tích Hợp Với Máy Chủ Web" để biết các phương pháp thay thế.

Tiện ích mở rộng PHP bổ sung

Nhiều tiện ích PECL khác cũng có sẵn trong kho lưu trữ để cài đặt một cách thuận tiện mà không cần phải biên dịch chúng. Điều này bao gồm một số tiện ích PECL phổ biến như Image Magick, APCu và Xdebug.

Dưới đây là một số tiện ích PECL và tên gói của chúng để sử dụng với lệnh apt install để cài đặt.

Tiện ích mở rộng Tên gói
Xdebug php8.3-xdebug
Redis php8.3-redis
PCov php8.3-pcov
Image Magick php8.3-imagick
APCu php8.3-apcu

Lưu ý rằng những tiện ích PECL này được phát triển bởi các nhà phát triển/nhóm cá nhân và có thể không được kiểm thử kỹ lưỡng như các thành phần chính của PHP. Có thể mất một thời gian để những gói này được tải lên, đợi các sửa lỗi tương thích từ phát triển tiện ích tương ứng.

Dưới đây là một tìm kiếm đơn giản trên apt:

sudo apt search php8.3-apcu # Search for "apcu" under PHP 8.3

Tệp packages.txt được tạo trong bước 2 sẽ hữu ích ở đây để tham chiếu đến các gói PHP hiện tại.

Tích hợp với máy chủ web

Trong hầu hết các trường hợp sử dụng, PHP được tích hợp với một máy chủ web. Tích hợp với PHP-FPM qua giao thức Fast CGI là phương pháp phổ biến nhất, trong khi cũng có thể tích hợp PHP với các SAPI khác.

Máy chủ web Apache

Khi cài đặt gói php8.3-fpm, nếu máy chủ web Apache (apache2) có mặt, sẽ có một tệp php8.3-fpm.conf mới, giúp dễ dàng chuyển đổi tích hợp PHP 8.3:

sudo a2enconf php8.3-fpm
sudo a2disconf php8.2-fpm # Khi nâng cấp từ một phiên bản PHP cũ hơn
sudo systemctl restart apache2

Khi Apache được cấu hình để chạy PHP như một mô-đun Apache (thường được gọi là mod_php hoặc mod_php8), hãy cài đặt gói libapache2-mod-php8.3 thay vì php8.3-fpm:

sudo apt install libapache2-mod-php8.3
sudo a2enmod php8.3
sudo a2dismod php8.2 # Khi nâng cấp từ một phiên bản PHP cũ hơn
sudo systemctl restart apache2

Nginx, Caddy, Litespeed và các máy chủ khác sử dụng giao thức Fast CGI

Gói php8.3-fpm cài đặt PHP-FPM và đăng ký một dịch vụ systemd cho PHP 8.3 FPM tại địa chỉ socket /run/php/php8.3-fpm.sock.

Đối với máy chủ web tích hợp với PHP qua Fast CGI, hãy thay đổi/cấu hình đường dẫn socket UNIX thành địa chỉ socket UNIX này.

Ví dụ, trên Nginx, điều này liên quan đến việc thay đổi chỉ thị fastcgi_pass:

fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Kiểm tra cài đặt PHP 8.3

Sau khi cài đặt tất cả các gói, đến lúc kiểm tra để xem liệu cài đặt mới có thành công hay không.

Chạy lệnh php -v trong terminal sẽ hiển thị một thông báo tương tự như sau:

Cài đặt PHP 8.3 trên Debian 11, 12 - Install PHP 8.3 Debian 11, 12

Danh sách các module có thể được liệt kê bằng lệnh php -m. Danh sách này sẽ bao gồm một số tiện ích mở rộng PHP tích hợp. Xem phần "Di Dời Cấu Hình" để biết cách di dời các chỉ thị PHP INI và các tiện ích mở rộng được kích hoạt sang các phiên bản PHP mới.

Di dời cấu hình

Bước này chỉ áp dụng khi nâng cấp lên PHP 8.3 từ một phiên bản PHP cũ hơn.

Các tệp cấu hình cho cài đặt PHP 8.3 mới nằm trong thư mục /etc/php/8.3. Cài đặt PHP hiện tại cũng nên nằm trong thư mục /etc/php.

Không nên sao chép các tệp PHP INI hiện tại vào /etc/php/8.3. Thay vào đó, so sánh hai tệp PHP INI tương ứng và chỉ cập nhật phiên bản PHP 8.3 khi cần thiết.

Khi sử dụng PHP-FPM, đảm bảo sao chép đúng số lượng quy trình FPM và các mô hình quy trình.

Các tập lệnh phpenmod và phpdismod cung cấp công cụ thuận tiện để bật/tắt các mô-đun PHP. Ví dụ, lệnh sau tắt tiện ích phar cho FPM trên PHP 8.3:

sudo phpdismod -v 8.3 -s fpm phar

Sau khi thay đổi, khởi động lại PHP 8.3-FPM:

sudo systemctl restart php8.3-fpm

Gỡ bỏ các phiên bản PHP cũ

Bước này chỉ áp dụng khi nâng cấp lên PHP 8.3 từ một phiên bản PHP cũ hơn.

Để gỡ bỏ các phiên bản PHP cũ, chạy apt purge với tiền tố phiên bản PHP. Ví dụ, lệnh sau gỡ bỏ các gói và cấu hình của PHP 8.2:

sudo apt purge php8.2*

Chạy PHP 8.3 cùng với các phiên bản khác

Có thể cài đặt PHP 8.3 cùng với các phiên bản PHP khác. Điều này thực tế là điều xảy ra khi cài đặt PHP 8.3 mà không loại bỏ các gói PHP cũ trước.

Mặc định, tất cả các gói phpX.Y-cli đều cài đặt các tệp nhị phân CLI của PHP tại vị trí /usr/bin/phpX.Y. Điều này có nghĩa đối với cài đặt PHP 8.3 là bất kỳ ứng dụng nào gọi PHP CLI dưới dạng php sẽ sử dụng tệp nhị phân PHP CLI đã được cài đặt cuối cùng (trong trường hợp này là PHP 8.3).

Khi sử dụng nhiều phiên bản PHP, hãy đảm bảo gọi đúng tệp nhị phân PHP bằng cách gọi trực tiếp thực thi /usr/bin/phpX.Y. PHP 8.3 có thể được gọi trực tiếp bằng cách sử dụng /usr/bin/php8.3.

Mặc định, tên php sẽ được tạo liên kết tượng trưng đến phiên bản PHP mới nhất, nhưng có thể thay đổi đến đâu lệnh php mặc định trỏ đến. Sử dụng lệnh update-alternatives để thay đổi đường dẫn mà lệnh php nên trỏ đến.

sudo update-alternatives --config php

Điều này hiển thị một hộp thoại để chọn lựa tương tác với đường dẫn thay thế của lệnh PHP.

Có 2 lựa chọn cho lệnh PHP thay thế (cung cấp /usr/bin/php).

There are 2 choices for the alternative php (providing /usr/bin/php).

     Selection      Path                Priority        Status
------------------------------------------------------------
*    0              /usr/bin/php8.3      83             auto mode
   1              /usr/bin/php8.2      82             manual mode
   2              /usr/bin/php8.3      83             manual mode

Để thiết lập đường dẫn mà không cần sự tương tác:

sudo update-alternatives --set php /usr/bin/php8.2

Bài viết đã hướng dẫn chi tiết cách cài đặt PHP 8.3 trên Debian 11 và 12, những phiên bản Debian phổ biến. Qua các bước được mô tả, bạn đã có thể mượn sức mạnh của những tính năng mới của PHP 8.3 và tích hợp chúng vào môi trường hệ thống của mình. Việc cài đặt PHP 8.3 không chỉ mang lại những cải tiến về hiệu suất mà còn mở ra nhiều khả năng linh hoạt, cho phép người dùng chạy nhiều phiên bản PHP cùng một lúc và quản lý chúng hiệu quả.

Các gói dịch vụ Cloud VPS của KDATA mang đến cho bạn nhiều lựa chọn về hiệu suất cũng như khả năng lưu trữ, mọi nhu cầu về doanh nghiệp đều được đáp ứng. KDATA đảm bảo khả năng uptime lên đến 99,99%, toàn quyền quản trị và free backup hằng ngày. Tham khảo ngay các gói dịch vụ Cloud VPS:

https://kdata.vn/cloud-vps

👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất